﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using DTO;
using DAO;
using BUS;
using QLVBDQ.UIControl;
namespace QLVBDQ.Cua_Hang
{
    /// <summary>
    /// Interaction logic for LapPhieuChi.xaml
    /// </summary>
    public partial class LapPhieuChi : UserControl
    {
        public LapPhieuChi()
        {
            InitializeComponent();
        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
           
        }

        private void listPhi_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        private void maPhi_LostFocus(object sender, RoutedEventArgs e)
        {
            DienThongTinPhi();
        }

        private void HoaDonMoi_Click(object sender, RoutedEventArgs e)
        {
            LayNgayHienTai();
            this.maPhi.Text = string.Empty;
            this.tienPhi.Text = string.Empty;
            this.tongTien.Text = "000";
            this.tenPhi.Text = string.Empty;
            this.listPhi.Items.Clear();
        }

        private void ThemPhi_Click(object sender, RoutedEventArgs e)
        {
            ThemPhiVaoDanhSach();
        }

        private void XoaPhi_Click(object sender, RoutedEventArgs e)
        {
            XoaPhiTrongDanhSach();
        }

        private void XuatPhieuChi_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Bạn Muốn Xuất phiếu Chi này?","Thông Tin",MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            {
                XuatPhieu();
            }
        }

        private void Thoat_Click(object sender, RoutedEventArgs e)
        {

        }

        private void LayNgayHienTai()
        {
            this.ngayLapPhieu.DisplayDate = DateTime.Now;
            this.ngayLapPhieu.SelectedDate = DateTime.Now;
        }

        private void LoadMaPhieu()
        {
            string item = PhieuChi_BUS.Instance.LayMaPhieuChi();
           if (item == null)
           {
               return;
           }
           this.maPhieu.Text = item;
        }

        private void LoadMaPhi()
        {
            List<string> list = Phi_BUS.Instance.DanhSachMaPhi();
            if (list == null)
            {
                return;
            }

            for (int i = 0; i < list.Count; i++)
            {
                this.maPhi.AddItem(new AutoCompleteEntry(list[i], list[i]));
            }
        }

        private void DienThongTinPhi()
        {
            string item = Phi_BUS.Instance.LayThongTinPhi(new Phi_DTO(this.maPhi.Text.ToString(),""));
            if (item == null)
            {
                this.tenPhi.Text = string.Empty;
                this.tienPhi.Text = string.Empty;
                return;
            }
            this.tenPhi.Text = item;
            this.tienPhi.Focusable = true;
        }

        private void ThemPhiVaoDanhSach()
        {
            long _tienPhi = 0;
            if (this.maPhi.Text == "" || this.tenPhi.Text == "" ||this.tienPhi.Text=="")
            {
                MessageBox.Show("Bạn Phải Điền Đầy Đủ Thông Tin!");
                return;
            }
            try
            {
                _tienPhi = long.Parse(this.tienPhi.Text.ToString());
            }
            catch (System.Exception ex)
            {
            	MessageBox.Show("Bạn phải nhập Tiền phí là 1 con số");
                return;
            }
            Phi_DTO item = new Phi_DTO(this.maPhi.Text, this.tenPhi.Text, long.Parse(this.tienPhi.Text.ToString()));
            item.STT = this.listPhi.Items.Count + 1;
            this.listPhi.Items.Add(item);
            TinhTongTien();
            this.maPhi.Text = string.Empty;
            this.tienPhi.Text = string.Empty;
            this.tenPhi.Text = string.Empty;
        }

       
        private void XoaPhiTrongDanhSach()
        {
            if (this.listPhi.Items.Count == 0)
            {
                this.tongTien.Text = "0";
                MessageBox.Show("Danh Sách Trống, Không thể xóa thêm!");
                return;
            }
            this.listPhi.Items.Remove((Phi_DTO)this.listPhi.SelectedItem);
            this.listPhi.Items.Refresh();
            TinhTongTien();
            CapNhapSTT();

        }

        private void CapNhapSTT()
        {
            
            for (int i = 0; i < this.listPhi.Items.Count; i++ )
            {
                Phi_DTO item = (Phi_DTO)this.listPhi.Items[i];
                item.STT = i + 1;
                this.listPhi.Items[i] = item;
                this.listPhi.Items.Refresh();
            }
        }

        public void XuatPhieu()
        {
            if (this.listPhi.Items.Count == 0)
            {
                MessageBox.Show("Không Tồn tại Danh Sách Phí");
                return;
            }

            PhieuChi_DTO _out = new PhieuChi_DTO(this.maPhieu.Text, (DateTime)this.ngayLapPhieu.SelectedDate, long.Parse(this.tongTien.Text));
            if (!PhieuChi_BUS.Instance.ThemPhieuChiMoi(_out))
            {
                MessageBox.Show("Thêm phiếu Chi Không Thành Công!");
                return;
            }

            for (int i = 0; i < this.listPhi.Items.Count;i++ )
            {
                Phi_DTO _temp = (Phi_DTO)this.listPhi.Items[i];
                ChiTietPhieuChi_DTO _item = new ChiTietPhieuChi_DTO("", this.maPhieu.Text.ToString(), _temp.MaPhi, _temp.ThanhTien);
                if (!ChiTietPhieuChi_BUS.Instance.ThemChiTietPhieuChi(_item))
                {
                    MessageBox.Show("Thêm Không Thành Công!");
                    return;
                }
            }
            MessageBox.Show("Thêm Thành Công");

            LayNgayHienTai();
            this.maPhi.Text = string.Empty;
            this.tienPhi.Text = string.Empty;
            this.tongTien.Text = "000";
            this.tenPhi.Text = string.Empty;
            this.listPhi.Items.Clear();
            LoadMaPhieu();


        }
        private void TinhTongTien()
        {
            long _tongTien = 0;
            for (int i = 0; i < this.listPhi.Items.Count;i++ )
            {
                Phi_DTO item = (Phi_DTO)this.listPhi.Items[i];
                _tongTien += item.ThanhTien;
            }

            this.tongTien.Text = _tongTien.ToString();
        }

        private void UserControl_Initialized(object sender, EventArgs e)
        {
            LoadMaPhieu();
            LoadMaPhi();
            LayNgayHienTai();
        }


    }
}
